﻿<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Introduction</title>
    <link rel="Stylesheet" type="text/css" href="../Style.css" />
</head>
<body>
    <h1>Programming the Reports Module</h1>
    <p>
        The Reports Module is designed to be very extensible in order to support many different
        Data Source and Data Visualization systems. There are two ways to extend the Reports
        Module: Develop a Data Source to allow users to retrieve data from other data stores,
        or develop a Visualizer to allow users to view data in different ways.
    </p>
    <h2>Architecture</h2>
    <div class="captioned_image">
        <img src="Images/Architecture-Overview.png" alt="Architecture Diagram" />
        <p class="caption">
            Figure 1 - Reports Module Architecture
        </p>
    </div>
    <p>
        The Reports Module Architecture is based on a pipeline architecture. Data Sources
        provide, upon the request of the Reports Module, a 
        <code>System.Data.DataView</code> object containing the data retrieved from the
        Data Source. The module performs some intermediate processing, such as HTML
        Encoding and Decoding, and passess the <code>DataView</code> to the Visualizer
        which is responsible for display the data.
    </p>
    <p>
        Data Sources and Visualizers are collectively called Extensions. An
        <dfn>Extension</dfn> is a component which plugs in to the Reports Module.
    </p>
    <h2>Settings Architecture</h2>
    <p>
        In order to perform their tasks, Extensions usually require some form of
        Configuration. For example, the DotNetNuke Data Source requires a Query to
        be executed against the DotNetNuke Database.
    </p>
</body>
</html>
